﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL_MechSysWeb;
using DTO_MechSysWeb;
using System.Web.Security;
using System.Data;

namespace WEB_MechSysWeb.Paginas_Administrador
{
    public partial class ServicosPendentes : System.Web.UI.Page
    {
        BLLCliente bllCliente = new BLLCliente();
        BLLVeiculo bllVeiculo = new BLLVeiculo();
        BLLOrdemPendente bllOrdemPendente = new BLLOrdemPendente();
        MembershipUser memberShipUser;
        static int ordemPendenteID;
        List<DTOOrdemPendente> lstServicosPendentes = new List<DTOOrdemPendente>();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                memberShipUser = Membership.GetUser(User.Identity.Name);
                if (memberShipUser != null)
                {
                    if (Roles.IsUserInRole("Cliente"))
                    {
                        Response.Redirect("~/Paginas_Logado/ClientePerfil.aspx");

                    }
                    if (Roles.IsUserInRole("Administrador"))
                    {


                    }
                }
                else
                {
                    Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
                }
            }
            catch (Exception)
            {
                Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
            }

            PreecherDados();
        }

        public void PreecherDados()
        {
            try
            {
                lstServicosPendentes = bllOrdemPendente.BuscarOrdensPendentes();
                gridServicos.DataSource = PopulaGridServicos(lstServicosPendentes);
                gridServicos.DataBind();
            }
            catch (Exception)
            {
                Mensagem.ExibirEmUP("Não foi possível carregar dados!");
            }
        }

        public DataTable PopulaGridServicos(List<DTOOrdemPendente> lstServicos)
        {
            DataTable dataTableGridView = new DataTable();
            DataRow dataRow;

            try
            {
                if (lstServicos.Count > 0)
                {

                    dataTableGridView.Columns.Add("OrdemPendenteID", typeof(string));
                    dataTableGridView.Columns.Add("Veiculo", typeof(string));
                    dataTableGridView.Columns.Add("Cliente", typeof(string));
                    dataTableGridView.Columns.Add("DataEntrada", typeof(string));
                    dataTableGridView.Columns.Add("PrevisaoEntrega", typeof(string));
                    dataTableGridView.Columns.Add("Prioridade", typeof(string));
                    dataTableGridView.Columns.Add("Status", typeof(bool));

                    foreach (DTOOrdemPendente dtoServico in lstServicos)
                    {
                        dataRow = dataTableGridView.NewRow();

                        dataRow["OrdemPendenteID"] = dtoServico.OrdemPendenteID.ToString();
                        DTOVeiculo dtoVeiculo = bllVeiculo.BuscarVeiculoPorVeiculoID(dtoServico.VeiculoID);
                        dataRow["Veiculo"] = string.Format("{0} {1}", dtoVeiculo.Marca, dtoVeiculo.Modelo);
                        DTOCliente dtoCliente = bllCliente.BuscarClientePorClienteID(dtoServico.ClienteID);
                        dataRow["Cliente"] = string.Format("{0} {1}", dtoCliente.Nome, dtoCliente.Sobrenome);
                        dataRow["DataEntrada"] = string.Format("{0:d}", dtoServico.DataEntrada);
                        dataRow["PrevisaoEntrega"] = string.Format("{0:d}", dtoServico.PrevisaoEntrega);
                        dataRow["Prioridade"] = dtoServico.Prioridade.ToString();
                        dataRow["Status"] = dtoServico.status;

                        dataTableGridView.Rows.Add(dataRow);

                    }
                }

            }
            catch (Exception)
            {
                Mensagem.ExibirEmUP("Não foi possível carregar os dados para o grid!");
            }

            return dataTableGridView;
        }

        public void LimparCampos()
        {

            txtVeiculo.Text = string.Empty;
            txtDataEntrada.Text = string.Empty;
            txtPrevisaoEntrega.Text = string.Empty;       
            txtResumo.Text = string.Empty;
            txtDescricao.Text = string.Empty;
            ordemPendenteID = 0;

        }

        protected void gridServicos_SelectedIndexChanged(object sender, EventArgs e)
        {
            ordemPendenteID = Convert.ToInt32(gridServicos.SelectedValue.ToString());

            DTOOrdemPendente dtoOrdemPendenteS = bllOrdemPendente.BuscarOrdemPendentePorOrdemID(ordemPendenteID);

            DTOVeiculo dtoVeiculoS = bllVeiculo.BuscarVeiculoPorVeiculoID(dtoOrdemPendenteS.VeiculoID);
            txtVeiculo.Text = string.Format("{0} {1}", dtoVeiculoS.Marca, dtoVeiculoS.Modelo);
            txtDataEntrada.Text = dtoOrdemPendenteS.DataEntrada.ToShortDateString();
            txtPrevisaoEntrega.Text = dtoOrdemPendenteS.PrevisaoEntrega.ToShortDateString();       
            txtResumo.Text = dtoOrdemPendenteS.Resumo;
            txtDescricao.Text = dtoOrdemPendenteS.Descricao;
        }
    }
}